StatQuest生物统计学 - 拟合基础
拟合是统计学中非常重要的知识,在纷繁的数据中精准的找到各变量之间的定量关系是一种非常有用而且有意思的事情。拟合在研究中其实非常常见,诸如在各种复杂的散点图中出现一条直线或平滑曲线,这条线大概率是拟合出来的。
先从最简单的拟合——直线拟合开始:
直线拟合——最小二乘法
直线拟合,又叫做线性回归,它和最小二乘法是分不开的。直观理解,直线拟合就是为了给一群散点计算出一个直线解析式(y=ax+b),这个直线解析式可以非常好的预测散点的趋势:也就是给定一个x值,那么预测的y值可以较好的代替实际值,给出一个y值亦然。
如下图中a所示的散点图,可以明显看的出来x-y之间存在一种数据趋势,从左下到右上逐步上升的趋势。如下图b所示,用于体现这种数据趋势的直线有很多条,抛开中间那条水平的直线,他们都可以较好的解释散点的数据趋势。
那么问题是哪一条最好呢?
拟合的优劣的衡量其实就是拟合直线与实际点之间的距离大小,距离越小,那么拟合越好,距离为0,那么所有数据点被直线完全拟合。预测点与实际点的距离为
上图b中拟合最差的一定是水平的那一条,以它为例,它与实际点之间的距离为(固定截距为3.5):
同样的,其他的直线都可以这么得出来它与实际点之间的距离大小。
那么计算不同的直线与实际点的距离,可以得到如下图a的散点图,存在一个最佳的直线斜率,使得距离(也就是残差平方和)最小,于是得到最佳的直线斜率。
假如变换直线的截距,那么就可以得到多个这种“直线斜率-残差平方和”曲线,那么就可以找到最佳的截距,如下图b,不同截距下有不同的“直线斜率-残差平方和”曲线,最好的斜率和截距在图中红色实线与虚线交汇的位置。于是最好的拟合曲线就找到了,最佳拟合直线为y=0.77⋅x+0.66
而上述这种寻找残差平方和最小的直线的拟合思想就是最小二乘法。
曲线拟合方法,尤其是lowess是建立在直线拟合之上的。
曲线拟合——lowess与loess
lowess的一般思想就是其名字体现出来的”局部“与”加权“
曲线拟合的经典方法是lowess与loess,loess是losess的一般化方法,是它的拓展,以下主要从lowess展开。
lowess,全称local weighted scatter smoothing,局部加权散点拟合,是一种非常好理解的方法,它的主要思想是:
将散点图中的每一个点及其周围特定数量的点称为一个窗口,每个点都有一个窗口,当前点位于窗口的中心(位于边缘的点除外);
每个窗口内部进行加权直线拟合,加权权重与两个因素有关:与当前点的距离、上一次拟合时实际点与拟合点的距离;
重复多次拟合,即可得到最佳曲线。
看起来很难懂,但其实是非常容易理解的理念,下面看一个例子:
原始数据有9个数据的;
第一个点作为“当前点”,于是可以得到一个局部窗口,点1,、2、3、4由于相距当前点愈来愈远,因此权重依次下降;
在窗口内进行权重拟合,可以得到新的曲线(蓝色直线)以及当前点的拟合点(红边蓝色点);
接着第二点作为“当前点”,可以得到第二个点的拟合点(红边蓝色点);
依次类推,就可以得到所有点的拟合点(见下下图 第一轮拟合)。
依次类推,就可以得到所有点的拟合点(红叉)以及相应的拟合曲线(蓝色曲线),见下图 第一轮拟合。
然而由于中间的一个异常值的存在,所以中间几个点的拟合点都受到了它的影响(距离它为2的点)。为了减少异常值的影响,可以根据当前拟合点与实际点之间的距离,调整每个点的拟合权重,如前3个点由于拟合点和真实点非常接近,因此它们的权重较高,而中间几个点,尤其是第6个点由于拟合点和真实点相距很远,因此权重较低。按照这样的权重调整,进行第二轮的lowess拟合。
注意:第二轮及以后的lowess拟合的权重不同于第一轮只有距离权重,它有两部分组成:距离权重和拟合权重。
距离权重:每个窗口内,根据相距“当前点”的距离大小分配不同的权重,越远越小;
拟合权重:第二轮及之后,因上一轮的拟合点与实际点之间距离的不同而分配不同的权重,越远越小。
如下图 第二轮拟合,拟合出来的曲线相比较第一轮拟合已经平滑了很多。
lowess与loess的比较
loess是lowess的一般情况,是它的拓展。loess支持在每一个窗口中进行抛物线拟合,而不只是直线拟合。
对下图a所示的散点图,分别进行lowess的窗口内直线拟合与loess的窗口内抛物线拟合,最终结果如下图b所示。
在R中,函数lowess用于lowess拟合,而函数loess用于loess拟合。
loess函数除了支持窗口内实施抛物线拟合外,还支持输出拟合曲线的置信区间。
参考资料
StatQuest课程:https://statquest.org/video-index/
猜你喜欢
生信菜鸟团-专题学习目录(6)
生信菜鸟团-专题学习目录(7)
还有更多文章,请移步公众号阅读
▼ 如果你生信基本技能已经入门,需要提高自己,请关注下面的生信技能树,看我们是如何完善生信技能,成为一个生信全栈工程师。
▼ 如果你是初学者,请关注下面的生信菜鸟团,了解生信基础名词,概念,扎实的打好基础,争取早日入门。